package kayttoliittyma;

import opintopaivakirja.*;
import java.awt.Color;
import java.util.ArrayList;
import opintopaivakirja.Muistiinpano;

/**
 *
 * @author Erkkinuuttinen
 */
public class PanelMuistiinpano extends javax.swing.JPanel {

    /** Creates new form PanelMuistiinpano
     * @param tavoiteid jokaisella tavoitteella on oma id
     */
    public PanelMuistiinpano(int tavoiteid) {
        initComponents();

        jTextFieldMPTagi.setText(tagiTF);
        jTextFieldMPLinkki.setText(linkkiTF);
        jTextAreaMP.setText(memoTA);

        poista = 0; // asetetaan 1 jos merkitään poistettavaksi
        id = 0;
        tila = 0;
        lkoko = 0;
        lid = 0;
        isa = tavoiteid;

    }

    /**
     *
     * @param memo
     */
    public PanelMuistiinpano(Muistiinpano memo) {
        initComponents();

        this.id = memo.getId();
        this.isa = memo.getIsa();
        this.tila = memo.getTila();
        this.lkoko = memo.getLinkit().size();
        if (lkoko > 0) {
            this.lid = memo.getLinkit().get(0).getId();
        }

        poista = 0; // asetetaan 1 jos merkitään poistettavaksi

        jTextAreaMP.setText(memo.getAsia());
        if (!memo.getAsia().equals("")) {
            jTextAreaMP.setForeground(Color.black);
        }

        // käyttöliittymään implementoimatta linkin otsikko sekä linkkien n kpl tuki 
        if (memo.getLinkit().size() > 0) {
            jTextFieldMPLinkki.setText(memo.getLinkit().get(0).getUrl());
            if (!memo.getLinkit().get(0).getUrl().equals("")) {
                jTextFieldMPLinkki.setForeground(Color.black);
            }
        }

        if (memo.getTagit().size() > 0) {
            String tagit = "";
            for (Tagi tagi : memo.getTagit()) {
                tagit = tagi.getSana() + " " + tagit;
            }

            jTextFieldMPTagi.setText(tagit);
            if (!tagit.equals("")) {
                jTextFieldMPTagi.setForeground(Color.black);
            }
        }
    }

    /**
     *
     * @return
     */
    public Muistiinpano getMuistiinpano() {

        Muistiinpano memo = new Muistiinpano();

        if (!jTextAreaMP.getText().equals(memoTA)) {
            memo.setAsia(jTextAreaMP.getText());

        } else {
            memo.setAsia("");
        }

        if (!jTextFieldMPLinkki.getText().equals(linkkiTF)) {
            ArrayList<Linkki> linkit = new ArrayList<Linkki>();
            Linkki lk = new Linkki("", jTextFieldMPLinkki.getText());


            if (id > 0) { // vanha memo
                if (lkoko > 0) {
                    lk.setTila(1);
                }
            } else { // uusi memo
                lk.setTila(0);
            }


            if (lkoko > 0) { // vanha memo jossa ollut linkki jo aiemmin
                lk.setId(lid); // kun vain 1 linkki niin tämä riittää
            }

            linkit.add(lk);
            memo.setLinkit(linkit);
        }

        if (!jTextFieldMPTagi.getText().equals(tagiTF)) {
            ArrayList<Tagi> tagit = new ArrayList<Tagi>();
            String[] st = jTextFieldMPTagi.getText().split(" ");
            for (String tagi : st) {
                tagit.add(new Tagi(tagi));
            }
            memo.setTagit(tagit);
        }

        memo.setOtsikko("");
        memo.setTyyppi(2);
        memo.setJarjestys(0);
        memo.setId(id);

        // kun poistetaan niin tämä -1
        // kun muokattu niin 2
        if (poista == 1) {
            memo.setTila(-1); // poistettava
        } else if (id > 0) {
            memo.setTila(1);
        } else {
            memo.setTila(0);
        }
        return memo;
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane2 = new javax.swing.JScrollPane();
        jTextAreaMP = new javax.swing.JTextArea();
        jTextFieldMPLinkki = new javax.swing.JTextField();
        jTextFieldMPTagi = new javax.swing.JTextField();
        jLabelPoisto = new javax.swing.JLabel();

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        jTextAreaMP.setColumns(20);
        jTextAreaMP.setForeground(new java.awt.Color(153, 153, 153));
        jTextAreaMP.setRows(5);
        jTextAreaMP.setText("Muistiinpanot...");
        jTextAreaMP.setName("jTextAreaMP"); // NOI18N
        jTextAreaMP.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jTextAreaMPMousePressed(evt);
            }
        });
        jTextAreaMP.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextAreaMPFocusLost(evt);
            }
        });
        jScrollPane2.setViewportView(jTextAreaMP);

        jTextFieldMPLinkki.setForeground(new java.awt.Color(153, 153, 153));
        jTextFieldMPLinkki.setText("Linkki");
        jTextFieldMPLinkki.setName("jTextFieldMPLinkki"); // NOI18N
        jTextFieldMPLinkki.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jTextFieldMPLinkkiMousePressed(evt);
            }
        });
        jTextFieldMPLinkki.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldMPLinkkiFocusLost(evt);
            }
        });

        jTextFieldMPTagi.setForeground(new java.awt.Color(153, 153, 153));
        jTextFieldMPTagi.setText("Tagit");
        jTextFieldMPTagi.setName("jTextFieldMPTagi"); // NOI18N
        jTextFieldMPTagi.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jTextFieldMPTagiMousePressed(evt);
            }
        });
        jTextFieldMPTagi.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldMPTagiFocusLost(evt);
            }
        });

        jLabelPoisto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabelPoisto.setText("X");
        jLabelPoisto.setName("jLabelPoisto"); // NOI18N
        jLabelPoisto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jLabelPoistoMouseClicked(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextFieldMPLinkki, javax.swing.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE)
                    .addComponent(jTextFieldMPTagi, javax.swing.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelPoisto)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelPoisto)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldMPLinkki, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldMPTagi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void jTextAreaMPMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextAreaMPMousePressed
        jTextAreaMP.setForeground(Color.black);
        if (jTextAreaMP.getText().equals(memoTA)) {
            jTextAreaMP.setText("");
        }
}//GEN-LAST:event_jTextAreaMPMousePressed

    private void jTextAreaMPFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextAreaMPFocusLost
        if (jTextAreaMP.getText().length() == 0) {
            jTextAreaMP.setForeground(Color.gray);
            jTextAreaMP.setText(memoTA);
        }
}//GEN-LAST:event_jTextAreaMPFocusLost

    private void jTextFieldMPLinkkiMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextFieldMPLinkkiMousePressed
        jTextFieldMPLinkki.setForeground(Color.black);
        if (jTextFieldMPLinkki.getText().equals(linkkiTF)) {
            jTextFieldMPLinkki.setText("");
        }
}//GEN-LAST:event_jTextFieldMPLinkkiMousePressed

    private void jTextFieldMPLinkkiFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldMPLinkkiFocusLost
        if (jTextFieldMPLinkki.getText().length() == 0) {
            jTextFieldMPLinkki.setForeground(Color.gray);
            jTextFieldMPLinkki.setText(linkkiTF);
        }
}//GEN-LAST:event_jTextFieldMPLinkkiFocusLost

    private void jTextFieldMPTagiMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextFieldMPTagiMousePressed
        jTextFieldMPTagi.setForeground(Color.black);
        if (jTextFieldMPTagi.getText().equals(tagiTF)) {
            jTextFieldMPTagi.setText("");
        }
}//GEN-LAST:event_jTextFieldMPTagiMousePressed

    private void jTextFieldMPTagiFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldMPTagiFocusLost
        if (jTextFieldMPTagi.getText().length() == 0) {
            jTextFieldMPTagi.setForeground(Color.gray);
            jTextFieldMPTagi.setText(tagiTF);
        }
}//GEN-LAST:event_jTextFieldMPTagiFocusLost

    private void jLabelPoistoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabelPoistoMouseClicked
        this.poista = 1;
        this.setVisible(false);
    }//GEN-LAST:event_jLabelPoistoMouseClicked

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabelPoisto;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea jTextAreaMP;
    private javax.swing.JTextField jTextFieldMPLinkki;
    private javax.swing.JTextField jTextFieldMPTagi;
    // End of variables declaration//GEN-END:variables
    private int poista; // asetetaan 1 jos merkitään poistettavaksi
    private int id;
    private int isa;
    private int tila;
    private int lkoko;
    private int lid;

    // Tekstikenttien oletustekstit
    private final String tagiTF = "Tagit";
    private final String linkkiTF = "Linkki";
    private final String memoTA = "Muistiinpanot...";
}
